// 给你一个 m 行 n 列的矩阵 matrix ，请按照 顺时针螺旋顺序 ，返回矩阵中的所有元素。
/**
 * @param {number[][]} matrix
 * @return {number[]}
 */
var spiralOrder = function (matrix) {
    if (!matrix.length) return []
    const ans = [];
    let t = 0, r = matrix[0].length - 1, b = matrix.length - 1, l = 0;
    const end = matrix.length * matrix[0].length;
    let num = 0;
    // console.log(num, end)
    while (num < end) {
        // console.log(num, ans)
        // 从左到右 top++；
        for (let i = l; i <= r; i++)  ans.push(matrix[t][i]) && num++;
        // t++;
        if (++t > b) break;
        // 从上到下 right--
        for (let i = t; i <= b; i++) { ans.push(matrix[i][r]); num++ };
        if (--r < l) break;
        // 从右到左
        for (let i = r; i >= l; i--) { ans.push(matrix[b][i]); num++ };
        // b--;
        if (--b < t) break;
        // 从下到上
        for (let i = b; i >= t; i--) { ans.push(matrix[i][l]); num++ };
        // l++;
        if (++l > r) break;
    }
    return ans;
};

module.exports = spiralOrder;